/**
 * @namespace 团购app的基本逻辑模块，包括jqm初始化
 * @name JF.tuan
 * @author Levin
 * @version 1.0
 */
JF.M("tuan",(function(){
	var p={},
		/** @scope JF.tuan.prototype */
		pub={};
	/* private methods
	++++++++++++++++++*/

	//地理位置模块
	p.geo={
		init:function(){
			JF.geo.AddListener(function(geoData){
				p.geo.ok(geoData);	
			},{
				ns:'tuan_ok'
			}).AddListener(function(geoErr){
				p.geo.error(geoErr);
			},{
				ns:'tuan_error',
				"error":true
			}).Fire();
		},
		ok:function(data){
			//获得地理位置
			//TODO:将坐标发送给server，获取该坐标相关的团购地区和分类
			//JF.tuan.log(data.pos.coords.latitude+","+data.pos.coords.longitude);
			//TEST：调用qqmap地图api
			JF.geo.Geocode({
				x:data.pos.coords.latitude,
				y:data.pos.coords.longitude,
				cbk:function(result,ok){
					if(ok){
						JF.tuan.log(result.address);
					}else{
						
					}
				}
			});
		},
		error:function(data){
			//未获得地理位置
			switch(data.err.code)  
			{  
				case data.err.PERMISSION_DENIED: 
					alert("user did not share geolocation data");  
				break;
	  
				case data.err.POSITION_UNAVAILABLE: 
					alert("could not detect current position");  
				break;
	  
				case data.err.TIMEOUT: 
					alert("retrieving position timedout");  
				break;
	  
				default: 
					alert("unknown error");  
				break;
			}
		}
	};

	//菊花(loader)模块
	p.loader={
		setup:function(){

			var me=this;
			this.$spin=$(".ui-loader .spin").cvloader({
				color:[255, 255, 255],
				height:24,
				numPetal:12
			});

			var _show=$.mobile.showPageLoadingMsg,
				_hide=$.mobile.hidePageLoadingMsg;

			$.mobile.showPageLoadingMsg=function(){
				if( $.mobile.loadingMessage ){
					$.fn.cvloader.Restart(me.$spin);
				};

				_show.call(this);
			};

			$.mobile.hidePageLoadingMsg=function(){
				if( $.mobile.loadingMessage ){
					$.fn.cvloader.Detach(me.$spin);
				};

				_hide.call(this);
			};

		}
	};

	//倒计时模块
	p.countdown={
		attach:function($o){
			if($o.length===0) return;
			if($o.jqmData("cdinit")) {
				$o.countdown("destroy");
			};
			$o.countdown({
				until:new Date(parseInt($o[0].getAttribute("data-deadline"))),
				layout:'<strong>剩余时间</strong>{d<}<span class="day c2">{dn}</span>{dl}{d>}<span class="hour c2">{hn}</span>{hl}<span class="minute c2">{mn}</span>{ml}<span class="second c2">{sn}</span>{sl}',
				onExpiry:function(t){
					this.innerHTML="已结束";
					$(this).addClass("expired");
				},
				alwaysExpire:true
			});
			$o.jqmData("cdinit",true);
		}
	};

	/* public methods
	++++++++++++++++++*/
	/**
	 * 初始化基本逻辑模块
	 * @name JF.tuan.init
	 * @function
	 * @private
	 * @param {Object} opts 配置对象
	 */
	pub.init=function(opts){

		document.addEventListener('touchmove',function(e){e.preventDefault();},false);

		p.opts=$.extend({
			clCur:'current',
			clIS_pager:'iscr_pager',
			clIS_pager_on:'c'
		},opts||{});

		//TODO:Remove the TEST code bellow
		/*
		var key=localStorage["mtuan.whosyourdaddy"];
		if(key==="1") return;
		key=window.prompt("请输入访问密码?","");
		if(key!==pub.whosyourdaddy()){
			window.location.href="http://vip.qq.com";
		}else{
			//set localStorage
			localStorage["mtuan.whosyourdaddy"]="1";
		};
		*/
		
	};
	/**
	 * 页面加载完毕后执行的逻辑
	 * @private
	 */
	pub.onLoad=function(){
		//p.geo.init();

		//loader
		p.loader.setup();

		//p.countdown.setup();

		//TEST-手工设置页面导航事件的绑定-测试是否能提升性能
		if(p.opts.navMGMT){
			$(":jqmData(role='page')").bind("pageshow",function(){
				var id=this.id;
				$.mobile.navMGMT.bind("#"+id+" section a");
			}).bind("pagehide",function(){
				var id=this.id;
				$.mobile.navMGMT.unbind("#"+id+" section a");
			});

			$.mobile.navMGMT.bind("#p1 section a");
			//底部导航直接使用mousedown，提升响应速度
			$.mobile.navMGMT.bind("#J_nav_gb a",false,"vmousedown");

			//订部导航直接使用mousedown，提升响应速度
			$.mobile.navMGMT.bind("header a",false,"vmousedown");
		}
		
	};

	/**
	 * 覆盖jqm的默认配置
	 * @name JF.tuan.preJqmInit
	 * @function
	 * @public
	 * @description 覆盖jqm的默认配置，请在引入jqm之前调用。Override the default jquery.mobile configurations
	 */
	pub.preJqmInit=function(){
		$(document).bind("mobileinit", function(){
			if($.mobile.selectmenu){
				$.mobile.selectmenu.prototype.options.nativeMenu = true;
			}
			$.mobile.loadingMessage="数据加载中";
		});
	};
	 //TODO:rename to setTitle
	pub.log=function(txt,$page){
		$page=$page||$.mobile.activePage;
		var $t=$page.find("h1");
		if(!txt){
			return;
		};
		$t.html(JF.Tail(txt,14));
		$t=null;
	};
	
	/**
	 * 首页图片iscoll滚动的回调函数
	 * @name JF.tuan.onScrollEnd
	 * @function
	 * @public
	 * @param {Object} data iscroll传过来的数据对象
	 */
	pub.onScrollEnd=function(data){
		data.target
			.next("."+p.opts.clIS_pager)
			.find("li")
			.removeClass(p.opts.clIS_pager_on)
			.eq(this.currPageX)
			.addClass(p.opts.clIS_pager_on);

		//lazyload proccess
		var cssSelector="#"+data.target[0].id+" img:eq("+this.currPageX+")";
		JF.Lazyload.Loading($(cssSelector),{
			loading:true,
			force:true
		});

	};
	/**
	 * TEST：团购列表iscoll滚动的回调函数
	 * @name JF.tuan.onScrollEnd1
	 * @function
	 * @public
	 * @param {Object} data iscroll传过来的数据对象
	 */
	pub.onScrollEnd1=function(data){
		//TODO:JF.tuan.log('y:'+this.y+','+this.maxScrollY);
		if( this.y>-1 ){
			//往上滚
			var $temp=$("#ebtn_more");
			if( $temp.data("busy") ) return;
			$temp.data("busy",true);
			JF.ajaxPool.recommend.load1($("#is_p11"),function($t,data,isError){
				$temp.data("busy",false);
			},false);
		};
	};
	/**
	 * 为指定的dom元素附加jquery.countdown组件
	 * @param {Object} $o 指定的jq dom对象
	 */
	pub.attachCountdown=function($o){
		p.countdown.attach($o);
	};
	/**
	 * 测试用的计时器
	 */
	pub.timer={
		t0:0,
		t1:0,
		val:function(){
			return ((this.t1-this.t0));
		},
		start:function(){
			this.t0=new Date().getTime();
			return this;
		},
		stop:function(){
			this.t1=new Date().getTime();
			return this;
		},
		reset:function(){
			this.t0=this.t1=0;
			return this;
		},
		log:function($p){
			pub.log(this.val(),$p);
		}
	};
	/**
	 * TODO: TEST key
	 */
	pub.whosyourdaddy=function(){
		return "007test";
	};

	return pub;
})());